package 多线程.多线程实现示例;

import java.util.concurrent.FutureTask;
import static java.lang.Thread.sleep;
public class 主函数 {
    public static void thread函数() throws Exception {
        多线程_补充一些thread的函数 线程1 = new 多线程_补充一些thread的函数();
        多线程_补充一些thread的函数 线程2 = new 多线程_补充一些thread的函数();
        线程1.setName("线程1");
        线程1.start();
//        join方法就是让当前这个线程先执行完
        线程1.join();
        System.out.println("线程1的名字"+线程1.getName());
        sleep(1000);
        线程2.setName("线程2");
        线程2.start();
        System.out.println("线程2的名字"+线程2.getName());
        Thread 现在=Thread.currentThread();
        System.out.println("现在的线程是"+现在.getName());
    }
    public static void 多线程_实现callable接口() throws Exception {
        多线程_实现callable接口 线程1 = new 多线程_实现callable接口(1);
        多线程_实现callable接口 线程2 = new 多线程_实现callable接口(2);
        FutureTask<String> 未来任务1 = new FutureTask<>(线程1);
        FutureTask<String> 未来任务2 = new FutureTask<>(线程2);
        new Thread(未来任务1).start();
        new Thread(未来任务2).start();
        String s1=未来任务1.get();
        String s2=未来任务2.get();
        System.out.println(s1);
        System.out.println(s2);
    }
    public static void 多线程_匿名内部类(){
        Runnable 多线程= () -> {
            for (int i = 0; i < 10; i++) {
                System.out.println("现在是匿名内部类线程的时间~~");
                try {
                    sleep(500);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        };
        new Thread(多线程).start();
    }
    public static void 多线程_继承thread() {
        多线程_继承thread 线程1 = new 多线程_继承thread(1);
        多线程_继承thread 线程2 = new 多线程_继承thread(2);
        线程1.start();
        线程2.start();
    }
    public static void 主线程() throws InterruptedException {
        for (int i = 0; i < 10; i++) {
            System.out.println("现在是主线程的时间~~");
            sleep(500);
        }
    }
    public static void 多线程_实现runnable接口() {
        Runnable 线程1 = new 多线程_实现runnable接口(1);
        Runnable 线程2 = new 多线程_实现runnable接口(2);
        Thread 线程类1 = new Thread(线程1);
        Thread 线程类2 = new Thread(线程2);
        线程类1.start();
        线程类2.start();
    }
    public static void main(String[] args) throws Exception {
        多线程_继承thread();
//        多线程_实现runnable接口();
//        多线程_匿名内部类();
//        多线程_实现callable接口();
//        thread函数();
//        主线程();
    }
}
